home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / ring14d.zip / RING.ASM < prev    next >
Assembly Source File  |  1994-03-08  |  41KB  |  1,052 lines

  1. ;--------------------------------------------------------------------------;
  2. ;  Program:    Ring    .Asm                                                ;
  3. ;  Purpose:    Rings the console bell.                                     ;
  4. ;  Notes:      Compiles under TURBO Assembler, v3.0. Should work on any    ;
  5. ;                 machine running MS-DOS, v2.xx or higher.                 ;
  6. ;  Status:     Released into the public domain. Enjoy! If you use it,      ;
  7. ;                 let me know what you think. You don't have to send       ;
  8. ;                 any money, just comments and suggestions.                ;
  9. ;  Updates:    23-Apr-89, v1.0, GAT                                        ;
  10. ;                 - initial version.                                       ;
  11. ;              22-Apr-90, v1.1, GAT                                        ;
  12. ;                 - revised all procedures based on work on ASK.           ;
  13. ;              05-May-90, GAT                                              ;
  14. ;                 - fixed bug in handling of non-zero return codes.        ;
  15. ;              13-May-90, v1.2, GAT                                        ;
  16. ;                 - added '-e' option to test for nonzero errorlevels.     ;
  17. ;              08-Jul-90, GAT                                              ;
  18. ;                 - added macros to push/pop registers.                    ;
  19. ;              28-Aug-90, v1.3a, GAT                                       ;
  20. ;                 - put equates and macros in separate files.              ;
  21. ;                 - put common routines in libs.                           ;
  22. ;              28-Dec-90, v1.4a, GAT                                       ;
  23. ;                 - added support under DOS v4.0 for '-e' option.          ;
  24. ;              15-Oct-91, v1.4b, GAT                                       ;
  25. ;                 - revised include file names.                            ;
  26. ;                 - added support for DOS v5.0.                            ;
  27. ;              03-Jul-93, v1.4c, GAT                                       ;
  28. ;                 - compiled with TASM v3.0.                               ;
  29. ;                 - version number now comes from makefile.                ;
  30. ;                 - specified ??date in lowercase.                         ;
  31. ;              09-Jul-93, v1.4d, GAT                                       ;
  32. ;                 - added support for DOS v6.0.                            ;
  33. ;--------------------------------------------------------------------------;
  34.  
  35. ;--------------------------------------------------------------------------;
  36. ;  Author:     George A. Theall                                            ;
  37. ;  SnailMail:  TifaWARE                                                    ;
  38. ;              610 South 48th St                                           ;
  39. ;              Philadelphia, PA.  19143                                    ;
  40. ;              U.S.A.                                                      ;
  41. ;  E-Mail:     george@tifaware.com                                         ;
  42. ;              theall@popmail.tju.edu                                      ;
  43. ;              theall@mcneil.sas.upenn.edu                                 ;
  44. ;              george.theall@satalink.com                                  ;
  45. ;--------------------------------------------------------------------------;
  46.  
  47. %NEWPAGE
  48. ;--------------------------------------------------------------------------;
  49. ;                          D I R E C T I V E S                             ;
  50. ;--------------------------------------------------------------------------;
  51. DOSSEG
  52. MODEL     tiny
  53.  
  54. IDEAL
  55. LOCALS
  56. JUMPS
  57.  
  58. FALSE               EQU       0
  59. TRUE                EQU       NOT FALSE
  60. BELL                EQU       7
  61. BS                  EQU       8
  62. TAB                 EQU       9
  63. CR                  EQU       13
  64. LF                  EQU       10
  65. ESCAPE              EQU       27             ; nb: ESC is a TASM keyword
  66. SPACE               EQU       ' '
  67. KEY_F1              EQU       3bh
  68. KEY_F2              EQU       3ch
  69. KEY_F3              EQU       3dh
  70. KEY_F4              EQU       3eh
  71. KEY_F5              EQU       3fh
  72. KEY_F6              EQU       40h
  73. KEY_F7              EQU       41h
  74. KEY_F8              EQU       42h
  75. KEY_F9              EQU       43h
  76. KEY_F10             EQU       44h
  77. KEY_HOME            EQU       47h
  78. KEY_UP              EQU       48h
  79. KEY_PGUP            EQU       49h
  80. KEY_LEFT            EQU       4bh
  81. KEY_RIGHT           EQU       4dh
  82. KEY_END             EQU       4fh
  83. KEY_DOWN            EQU       50h
  84. KEY_PGDN            EQU       51h
  85. KEY_INS             EQU       52h
  86. KEY_DEL             EQU       53h
  87. KEY_C_F1            EQU       5eh
  88. KEY_C_F2            EQU       5fh
  89. KEY_C_F3            EQU       60h
  90. KEY_C_F4            EQU       61h
  91. KEY_C_F5            EQU       62h
  92. KEY_C_F6            EQU       63h
  93. KEY_C_F7            EQU       64h
  94. KEY_C_F8            EQU       65h
  95. KEY_C_F9            EQU       66h
  96. KEY_C_F10           EQU       67h
  97. KEY_C_LEFT          EQU       73h
  98. KEY_C_RIGHT         EQU       74h
  99. KEY_C_END           EQU       75h
  100. KEY_C_PGDN          EQU       76h
  101. KEY_C_HOME          EQU       77h
  102. KEY_C_PGUP          EQU       84h
  103. KEY_F11             EQU       85h
  104. KEY_F12             EQU       86h
  105. KEY_C_F11           EQU       89h
  106. KEY_C_F12           EQU       8ah
  107. @16BIT              EQU       (@Cpu AND 8) EQ 0
  108. @32BIT              EQU       (@Cpu AND 8)
  109. NOWARN RES
  110. MACRO    PUSHA                               ;; Pushs all registers
  111.    IF @Cpu AND 2                             ;;  if for 80186 or better
  112.       pusha                                  ;;   use regular opcode
  113.    ELSE                                      ;;  else
  114.       push ax cx dx bx sp bp si di           ;;   nb: order matters!
  115.                                              ;;   nb: SP is not original!
  116.    ENDIF
  117. ENDM
  118. MACRO    POPA                                ;; Pops all registers
  119.    IF @Cpu AND 2                             ;;  if for 80186 or better
  120.       popa                                   ;;   use regular opcode
  121.    ELSE                                      ;;  else
  122.       pop di si bp bx bx dx cx ax            ;;   nb: order matters!
  123.                                              ;;   nb: don't pop SP!
  124.    ENDIF
  125. ENDM
  126. NOWARN RES
  127. MACRO    ZERO     RegList                    ;; Zeros registers
  128.    IRP      Reg, <RegList>
  129.          xor      Reg, Reg
  130.    ENDM
  131. ENDM
  132.  
  133. DOS                 EQU       21h            ; main MSDOS interrupt
  134. STDIN               EQU       0              ; standard input
  135. STDOUT              EQU       1              ; standard output
  136. STDERR              EQU       2              ; error output
  137. STDAUX              EQU       3              ; COM port
  138. STDPRN              EQU       4              ; printer
  139. TSRMAGIC            EQU       424bh          ; magic number
  140. STRUC     ISR
  141.           Entry     DW        10EBh          ; short jump ahead 16 bytes
  142.           OldISR    DD        ?              ; next ISR in chain
  143.           Sig       DW        TSRMAGIC       ; magic number
  144.           EOIFlag   DB        ?              ; 0 (80) if soft(hard)ware int
  145.           Reset     DW        ?              ; short jump to hardware reset
  146.           Reserved  DB        7 dup (0)
  147. ENDS
  148. STRUC     ISRHOOK
  149.           Vector    DB        ?              ; vector hooked
  150.           Entry     DW        ?              ; offset of TSR entry point
  151. ENDS
  152. STRUC     TSRSIG
  153.           Company   DB        8 dup (" ")    ; blank-padded company name
  154.           Product   DB        8 dup (" ")    ; blank-padded product name
  155.           Desc      DB        64 dup (0)     ; ASCIIZ product description
  156. ENDS
  157. GLOBAL at : PROC
  158. GLOBAL errmsg : PROC
  159.    GLOBAL ProgName : BYTE                    ; needed for errmsg()
  160.    GLOBAL EOL : BYTE                         ; ditto
  161. GLOBAL fgetc : PROC
  162. GLOBAL fputc : PROC
  163. GLOBAL fputs : PROC
  164. GLOBAL getchar : PROC
  165. GLOBAL getdate : PROC
  166. GLOBAL getswtch : PROC
  167. GLOBAL gettime : PROC
  168. GLOBAL getvdos : PROC
  169. GLOBAL getv